Closed Bug 83786 Opened 24 years ago Closed 24 years ago

Table width algorithm ignores right margin (and uses left margin instead) [MARGIN-H] (tables, margins)

Categories

(Core :: Layout: Tables, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

()

VERIFIED FIXED

People

(Reporter: ian, Assigned: bernd_mozilla)

References

()

Details

(Keywords: css2, testcase, Whiteboard: [Hixie-P3])

Attachments

(1 file)

When working out if a table fits in its container (and thus whether it should be shrunk), we use the left margin instead of the right margin. Thus, for example, in: table { margin-left: 1em; margin-right: 10em; } ...we assume that the table has horizontal margins of "2em" when trying to size the table. Later, when we actually lay the table out and work out if we need scroll bars, we correctly realise that the right margin is 10em. This is visible in one of the testcases mentioned on bug 72060: http://web.thock.com/mozilla/css_bug2b.html The table should have 10em right margin, but when being sized our code assumes that the table has 0 right margin (since the left margin is 0) and therefore sizes the table to 100% (modulo borders). When we then lay this out, we see the right margin and therefore provide a horizontal scrollbar. This works fine when borders are used in the test instead of margins: http://www.hixie.ch/tests/adhoc/css/box/table/005.html
Keywords: css2, testcase
Whiteboard: [Hixie-P3]
steeling the bug; the following patch fixes the problem Index: nsTableOuterFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/html/table/src/nsTableOuterFrame.cpp,v retrieving revision 3.191 diff -u -w -r3.191 nsTableOuterFrame.cpp --- nsTableOuterFrame.cpp 2001/05/17 23:52:29 3.191 +++ nsTableOuterFrame.cpp 2001/06/04 16:35:08 @@ -521,7 +521,7 @@ GetMarginPadding(aPresContext, aOuterRS, aChildFrame, marginIgnore, aMarginNoAuto, aPadding); nscoord width = aOuterWidth; if (NS_UNCONSTRAINEDSIZE != width) { - width = aOuterWidth - aMarginNoAuto.left + aMarginNoAuto.right; + width = aOuterWidth - aMarginNoAuto.left - aMarginNoAuto.right; width = PR_MAX(width, mMinCaptionWidth); } return width;
Assignee: karnaze → bernd.mielke
Attached patch patchSplinter Review
despite the discouraging comments at http://www.hixie.ch/tests/adhoc/css/box/table tables need some more love (e.g. testcases). The provided patch fixes hixies testcase and improves the picture at http://lxr.mozilla.org/mozilla/source/layout/html/tests/table/bugs/bug15247.html where the margin at the right of the second and third nested table is removed. (I like regression tests!!). Further it makes nsTableFrame.cpp more stringent because it removes completely the reference to margins that should be handled in the outer frame.
Keywords: patch, review
The patch certainly logically explains the effect I was seeing. Bernd: The person to ask for tables test cases is amar@netscape.com (the QA contact for this bug, incidentally). Feel free to cc me on any correspondence.
Keywords: mozilla0.9.2
r=karnaze.
sr=attinasi
Blocks: 83989
a=dbaron for trunk checkin on behalf of drivers
fix checked in, >The person to ask for tables test cases is amar@netscape.com (the QA >contact for this bug, incidentally). Feel free to cc me on any correspondence. I know, but I know how makes the best testcases in town :-)
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Works fine in recent builds.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: